package cn.quevo.ucenter.core.token;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import cn.quevo.core.lang.StringUtils;
import lombok.Data;

/**
 * AuthorizationToken抽象实现
 * 
 * @author July july_sky@foxmail.com
 * @date 2017年12月29日 下午10:21:35
 * @Copyright ©2015-2035 湘豫(北京)科技有限公司. All Rights Reserved.
 * @version 1.0
 */
@Data
public abstract class AbstractAuthorizationToken implements AuthorizationToken{

    /** 角色字符串集合 */
    protected String roles;
    /** 权限字符串集合 */
    protected String permissions;
    
    @Override
    public String getUserName() {
        return null;
    }
    
    @Override
    public boolean isExpired() {
        return this.getExpiredIn() == null || this.getExpiredIn() <= 0;
    }

    @Override
    public boolean isSuperAdmin() {
        return false;
    }

    @Override
    public Set<String> getRoles() {
        return this.convertStringToSet(roles);
    }

    @Override
    public Set<String> getPermissions() {
        return this.convertStringToSet(permissions);
    }
    
    /**
     * 字符串转换成Set
     * 
     * @author July july_sky@foxmail.com
     * @date 2017年12月29日 下午10:26:16
     * @param strs
     * @return
     */
    protected Set<String> convertStringToSet(String strs) {
        if(StringUtils.isBlank(strs)) {
            return new HashSet<>();
        }
        String[] args = strs.split(",");
        Set<String> set = new HashSet<>(args.length);
        set.addAll(Arrays.asList(args));
        return set;
    }
}
